package permission.frame.core.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 软件模块属性注释
 *     id、name必输入，模块类型，默认为顶级模块
 * @author zhoush
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(value = { ElementType.TYPE })
public @interface Module {
	/**
	 * 模块类型
	 * @author zhoush
	 *
	 */
	public enum ModuleType {
		/**
		 * 顶级模块（顶级菜单项）
		 */
		topModule,
		/**
		 * 流程表单
		 */
		processForm
	}
	
	/**
	 * UUID,唯一标识符
	 * 
	 * @return
	 */
	public String id();
	
	/**
	 * 模块类型，默认为顶级模块
	 */
	public ModuleType moduleType() default ModuleType.topModule;

	/**
	 * 功能模块名称
	 * 
	 * @return
	 */
	public String name();

	/**
	 * 显示的ICO的地址（相对于根目录）
	 * 
	 * @return
	 */
	public String ico() default "";

	/**
	 * 备注说明
	 * 
	 * @return
	 */
	public String memo() default "";
	/**
	 * 默认执行方法
	 * @return
	 */
	public String defaultFunctionName() default "execute";
}